package com.example.workflow.service;

import com.example.workflow.dto.OrderStatusCountDto;
import com.example.workflow.dto.OrderTimeSeriesDto;
import com.example.workflow.dto.OrderTypeCountDto;
import java.time.LocalDate;

/**
 * 管理员工单统计服务接口
 */
public interface AdminStatsService {
    /**
     * URL: /admin/total-count
     * 获取指定日期范围内系统整体工单计数统计，以时序数组形式返回
     *
     * @param begin 开始日期
     * @param end 结束日期
     * @param gap 时间间隔 (day/week/month)
     * @return 时序格式的工单统计数据
     */
    OrderTimeSeriesDto countSystemOrdersByTimeRange(LocalDate begin, LocalDate end, String gap);
    
    /**
     * URL: /admin/status-count
     * 获取系统所有工单的各状态数量统计
     *
     * @return 各状态工单数量统计
     */
    OrderStatusCountDto countSystemOrdersByStatus();
    
    /**
     * URL: /admin/type-count
     * 获取系统所有工单的各类型数量统计
     *
     * @return 各类型工单数量统计
     */
    OrderTypeCountDto countSystemOrdersByType();
    
    /**
     * 获取指定日期范围内完成的工单数量统计
     * 
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @param gap 时间间隔(day/week/month)
     * @return 完成工单的时间序列统计
     */
    OrderTimeSeriesDto getCompletedOrderStats(String beginDate, String endDate, String gap);
    
    /**
     * 获取指定日期范围内驳回的工单数量统计
     * 
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @param gap 时间间隔(day/week/month)
     * @return 驳回工单的时间序列统计
     */
    OrderTimeSeriesDto getRejectedOrderStats(String beginDate, String endDate, String gap);
}
